/***************************************************************************************************
  Copyright(C)   2011-2013
  All rights reserved.
  File Name: updatefile.h

  Description: usb线程模块，主要是更新资源时开启一个线程用来拷贝资源


  ***************************************************************************************************/

#ifndef USBTHREAD_H
#define USBTHREAD_H

#include <QThread>

#include "updateresource.h"

class UsbThread : public QThread
{
    Q_OBJECT
public:
    explicit UsbThread(QObject *parent = 0);

    void setDriver(const QString &usbPath);

    void setUpdatePath(const QString& usbPath, const QString& backupPath);

protected:
    void run();

signals:
    void finish();

    //卸载USB情况,0成功,-1失败
    void umountUsbState(const int state);

    //开始更新,可能情况,proCount <= 0开始更新,proCount>0,找到更新文件的数量
    void startToUpdate(const int proCount, const QString& publishTime);

    //err：-1,xml解析出错;-2,当前版本为最新的;-3,拷贝数据库或者pro文件出错；-4,拷贝资源文件出错;-5,挂载U盘失败; -6,更新文件不齐全; ;
    //-7,更新失败，无备份文件,-8,更新失败，备份文件不齐全;
    void updateFinish(const int condition, const ProjectStruct &project);

    void umountUsb();

private:
    QString     m_usbPath;
    QString     m_backUpPath;
    QStringList m_usbPathList;
    int         m_umountCount;

};

#endif // USBTHREAD_H
